마이크로서비스의 개발과 운영
- 대규모 분산 시스템의 과제
- 코드 해석 툴이 있으나 객체 의존 관계 파악이 어려워 전체 구조 파악 어려움
- 새 기능 추가, 릴리스 시 버그 발견하면 수정할 때까지 전체 릴리스 중단
- 개발 부담 가중
- 배포의 부담 역시 가중되며 개발팀의 커뮤니케이션 악화 가능성
- 규모 커질수록 빌드와 결합에 시간 소요
- 많은 공간이 요구되어 이식성이 떨어짐
- 분산 시스템을 마이크로서비스로 구현할 시 장점
- 서비스 단위 배포를 통해 버그 수정, 기능 릴리스 쉬움
- DDD를 통해 책임 범위, 서비스 간 의존 관계 명시적 분리
- 작은 서비스 규모로 적은 인원의 개발, 구축, 배포 진행
- 각 서비스 담당 범위가 명확하여 서비스 단위 개발 진행
- 기술 스택 자유롭게 선택
- circuit breaker를 통해 장애가 발생해도 영향 국소화
- 약한 결합을 통해 서비스 간 영향 최소화
- 주의점
- 각 서비스는 단순하나 전체적으로는 동적 부품이 증가
- 서비스 간 통신 구현 필수
- 타 서비스에 의존하는 경우, 새로운 접근법 필요
- 리팩토링 부담